package models

import (
	"gorm.io/gorm"
	// 确保导入 datatypes
	_ "gorm.io/datatypes"
)

// RegisterTables 执行数据库迁移
func RegisterTables(db *gorm.DB) error {
	// 明确指定迁移顺序，确保依赖项先创建

	if err := db.AutoMigrate(&AuthKey{}); err != nil {
		return err
	}

	if err := db.AutoMigrate(&Topic{}); err != nil {
		return err
	}

	if err := db.AutoMigrate(&MQConfig{}); err != nil {
		return err
	}

	// 然后创建依赖基础表的表
	if err := db.AutoMigrate(&Consumer{}); err != nil {
		return err
	}

	if err := db.AutoMigrate(&Task{}); err != nil {
		return err
	}

	// 最后创建依赖多个表的表
	if err := db.AutoMigrate(&ConsumerSubscription{}); err != nil {
		return err
	}

	if err := db.AutoMigrate(&TaskStatusHistory{}); err != nil {
		return err
	}
	if err := db.AutoMigrate(&MessageHistory{}); err != nil {
		return err
	}
	return nil
}
